/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.servicoimpl;

import br.com.deployment.entidade.empresa.Cartorio;
import br.com.deployment.entidade.localidade.Endereco;
import br.com.deployment.interfaces.CartorioDaoIn;
import br.com.deployment.servico.CartorioServico;
import br.com.deployment.servico.CidadeServico;
import br.com.deployment.servico.UsuarioServico;
import br.com.deployment.utilitario.Caracteres;
import br.com.deployment.utilitario.Msg;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

/**
 *
 * @author luciano
 */
@Stateless
@LocalBean
public class CartorioServicoImpl implements CartorioServico{

    @EJB
    CartorioDaoIn dao;
    @EJB
    CidadeServico cidadeServico;
    @EJB
    UsuarioServico usuarioServico;
    
    @Override
    public void salvar(Cartorio cartorio) {
            cartorio = modificaCartorio(cartorio);
            dao.save(cartorio);
       
    }

    @Override
    public void atualizar(Cartorio cartorio) {
        try {
            cartorio = modificaCartorio(cartorio);
            dao.update(cartorio);
        } catch (Exception e) {
            Msg.messagemError("Ocorreu um erro desconhecido.");
        }
    }

    @Override
    public Boolean existe(Cartorio cartorio) {
        try {
          return dao.exist(cartorio);  
        } catch (Exception e) {
           Msg.messagemError("Ocorreu um erro desconhecido.");
        }
        return null;
    }

    @Override
    public void remover(Cartorio cartorio) {
        try {
            dao.delete(cartorio);
        } catch (Exception e) {
            Msg.messagemError("Ocorreu um erro desconhecido.");
        }
    }

    @Override
    public Cartorio find(int id) {
        try {
           return dao.find(id); 
        } catch (Exception e) {
            Msg.messagemError("Ocorreu um erro desconhecido.");
        }
        return null;
    }

    @Override
    public List<Cartorio> cartorios() {
        try {
            return dao.findAll();
        } catch (Exception e) {
            Msg.messagemError("Ocorreu um erro desconhecido.");
        }
        return null;
    }

    @Override
    public List<Cartorio> findCartorio(Cartorio cartorio) {
        try {
            return dao.findCartorio(cartorio);
        } catch (Exception e) {
            Msg.messagemError("Ocorreu um erro desconhecido.");
        }
        return null;
    }
    
    private Cartorio modificaCartorio(Cartorio c){
        try{
        if (c.getEndereco().getCidade() != null) {
             c.getEndereco().setCidade(cidadeServico.find(c.getEndereco().getCidade().getCod_cidade()));
             c.getEndereco().setEstado(c.getEndereco().getCidade().getCod_estado());
        }
        
        Endereco enderecoTitular = c.getTitular().getEndereco();
        
        if (enderecoTitular.getCidade() != null) {
                enderecoTitular.setCidade(cidadeServico.find(enderecoTitular.getCidade().getCod_cidade()));
                enderecoTitular.setEstado(enderecoTitular.getCidade().getCod_estado());
                c.getTitular().setEndereco(enderecoTitular);
         }
            c.getTitular().setCpf(Caracteres.removecaracter(c.getTitular().getCpf()));
            c.getTitular().getEndereco().setCelular(Caracteres.removecaracter( c.getTitular().getEndereco().getCelular()));
            c.getTitular().getEndereco().setTelefone(Caracteres.removecaracter( c.getTitular().getEndereco().getTelefone()));
            c.getTitular().getEndereco().setCep(Caracteres.removecaracter( c.getTitular().getEndereco().getCep()));

            c.getEndereco().setCelular(Caracteres.removecaracter(c.getEndereco().getCelular()));
            c.getEndereco().setTelefone(Caracteres.removecaracter(c.getEndereco().getTelefone()));
            c.getEndereco().setCep(Caracteres.removecaracter(c.getEndereco().getCep()));
        }catch(NullPointerException np){
            
        }
            return c;
    }
    
     public HashMap<String, Object> getCartorioRelatorio(HashMap<String, Object> parametros){      
            Cartorio cartorio = new Cartorio();
        try {
            cartorio =  getCartorioContext();
        } catch (Exception ex) {
            Logger.getLogger(OrcamentoServicoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
            
            
            String nomeTitulo = ""+cartorio.getTitular().getNome();
            String endereco = ""+cartorio.getEndereco().getTipo_logradouro().toString().toUpperCase() + " " +cartorio.getEndereco().getLogradouro() + " - " + cartorio.getEndereco().getTelefone();
            String cidade = ""+cartorio.getEndereco().getCidade().getNom_cidade().toUpperCase() + " - " + cartorio.getEndereco().getEstado().getNom_estado().toUpperCase();            
            
            parametros.put("cartorioNome", cartorio.getNome());
            parametros.put("cartorioTitular", nomeTitulo);
            parametros.put("cartorioEndereco", endereco);
            parametros.put("cartorioCidade", cidade);
        
            return parametros;
    }
     
     public Cartorio getCartorioContext(){
            return find(usuarioServico.getUsuario().getCartorio().getId());
     }
    
}
